package com.bosssoft.goods.service;

import com.bosssoft.base.entity.PaginationData;
import com.bosssoft.goods.domain.bean.CatBrandBind;
import com.bosssoft.goods.domain.bean.GoodsBrand;
import com.bosssoft.goods.domain.vo.EditBrandVO;

import java.util.List;

/**
 * 商品品牌操作服务接口类
 * @author Fang_Sir
 * @date 2021-04-13
 */
public interface GoodsBrandService {
    /**
     * 获取品牌列表
     * @param page 页码
     * @param size 页大小
     * @return 品牌列表分页数据
     */
    PaginationData<GoodsBrand> getBrandList(int page,int size);

    /**
     * 获取品牌信息
     * @param name 品牌名称
     * @return {@link GoodsBrand}
     */
    GoodsBrand getBrandInfo(String name);

    /**
     * 添加品牌
     * @param name 品牌名称
     * @return 成功返回 true
     */
    boolean addBrand(String name);

    /**
     * 判断品牌是否存在
     * @param name 品牌名称
     * @return 存在返回 true
     */
    boolean isExistBrand(String name);

    /**
     * 编辑品牌信息
     * @param info 品牌信息
     * @return 成功返回 true
     */
    boolean editBrand(EditBrandVO info) throws Exception;

    /**
     * 删除品牌信息
     * @param brandId 品牌编号
     * @return 删除成功返回 true
     */
    boolean delBrand(int brandId);

    /**
     * 获取商品分类关联品牌列表
     * @param catId 商品三级分类编号
     * @return {@link CatBrandBind} 列表
     */
    List<CatBrandBind> getCatBrandList(int catId);

    /**
     * 设置第三级分类与品牌绑定
     * @param catId 第三级分类编号
     * @param brandId 品牌编号
     * @return 设置成功返回 true
     * @throws Exception 重复添加或分类和品牌已绑定抛异常
     */
    boolean bindCatBrand(int catId, int brandId) throws Exception;

    /**
     * 判断第三级分类与品牌是否绑定
     * @param catId 第三级分类编号
     * @param brandId 品牌编号
     * @return 设置成功返回 true
     */
    boolean isCatBrandBind(int catId,int brandId);

    /**
     * 移除商品分类与品牌关联
     * @param catId 分类编号
     * @param brandId 品牌编号
     * @return 移除成功返回 true
     */
    boolean removeCategoryBrand(int catId,int brandId);
}
